package com.itdl.common.base.properties;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * 自定义Redis属性文件
 */
@ConfigurationProperties(prefix = "redis", ignoreInvalidFields = true)  // prefix:属性配置前缀, ignoreInvalidFields: 忽略字段的校验
@Data   // 简化Setter和Getter
public class CustomRedisProperties {

    /**
     * 是否开启Redis的配置
     */
    private boolean enable = false;

    /**
     * Redis连接地址，IP:PORT,IP:PORT
     */
    private String host = "";
    /**
     * Redis连接密码
     */
    private String password = "";
    /**
     * 如果是单机版，可以选择哪个数据库
     */
    private Integer database = 0;

    /**
     * 最大重定向次数，可选配置
     */
    private Integer maxRedirects = null;
    /**
     * SpringCache前缀, 方便key管理
     */
    private String keyPrefix = "myrds";

    /**
     * 是否缓存空值，默认不缓存
     */
    private boolean cacheNullValues = false;

    /**
     * 缓存空值的key集合在内存中存储的最大数量
     */
    private Integer cacheNullValueKeySizeInMemory = 102400;

    /**jedis连接池配置*/
    private CustomRedisPoolConfig<?> pool = new CustomRedisPoolConfig<>();

    @Data
    @EqualsAndHashCode(callSuper = false)
    public static class CustomRedisPoolConfig<T> extends GenericObjectPoolConfig<T> {
        // 定义扩展属性
    }
}
